/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelos;

import entidades.Ingeniero;
import interfaz.Entidad;
import interfaz.Modelo;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
import manejadores.ManejadorDeIngeniero;

/**
 *
 * @author Snailin
 */
public class ModeloDeIngeniero extends AbstractTableModel implements Modelo{

        private ManejadorDeIngeniero manejadorDeIngeniero=null;
        private ArrayList<Ingeniero>ingenieros=null;
        private String [] encabezado=null;
        private Ingeniero ingeniero=null;



        public ModeloDeIngeniero(){
            manejadorDeIngeniero=ManejadorDeIngeniero.getInstancia();
            ingenieros=manejadorDeIngeniero.getIngenieros();
            encabezado=new String[]{"ID","Nombre","Apellido","Cedula","Telefono"};

        }

        @Override
        public String getColumnName(int posicion){
            return encabezado[posicion];
        }


	@Override
	public int getColumnCount() {

		return encabezado.length;
	}


        @Override
	public int getRowCount() {

		return ingenieros.size();

	}




    public Object getValueAt(int fila, int columna) {

        ingeniero=ingenieros.get(fila);
        String retorno="";
        switch(columna){
            case 0:
                retorno=String.valueOf(ingeniero.getIdIngenieria());
              break;

            case 1:
                retorno=ingeniero.getNombre();
              break;

               case 2:
                retorno=ingeniero.getApellido();
              break;

               case 3:
                retorno=ingeniero.getCedula();
              break;


               case 4:
                retorno=ingeniero.getTelefono();
              break;

          }

        return retorno;

    }

    @Override
    public void setValueAt(Object valor,int fila,int columna){
           ingeniero=ingenieros.get(fila);

        switch(columna){
            case 0:
                ingeniero.setIdIngenieria((Integer)(valor));
              break;

            case 1:
                ingeniero.setNombre((String)(valor));
              break;

               case 2:
                ingeniero.setApellido((String)(valor));
              break;

               case 3:
               ingeniero.setCedula((String)(valor));
              break;


               case 4:
               ingeniero.setTelefono((String)(valor));
              break;

          }



    }

    public int agregar(Entidad ingeniero) {
        int fila =0;
        fila=manejadorDeIngeniero.agregar(ingeniero);
        ingenieros=manejadorDeIngeniero.getIngenieros();
        fireTableStructureChanged();
        fireTableDataChanged();

        return fila;
    }

    public int modificar(Entidad ingeniero, int id) {
        int fila=0;
        fila=manejadorDeIngeniero.modificar(ingeniero, id);
        ingenieros=manejadorDeIngeniero.getIngenieros();
        fireTableStructureChanged();
        fireTableDataChanged();
        return fila;
    }

    public int eliminar(int id) {
        int fila =0;
        fila=manejadorDeIngeniero.eliminar(id);
        fireTableRowsDeleted(fila, fila);
        ingenieros=manejadorDeIngeniero.getIngenieros();
        fireTableDataChanged();
        return fila;
    }

    public ArrayList<Ingeniero> getIngenieros(){
        return manejadorDeIngeniero.getIngenieros();
    }

}